package com.m4u.hibernate.test.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Blob;
import java.util.Date;
import java.util.HashSet;

import org.hibernate.Session;
import org.hibernate.lob.BlobImpl;

import com.m4u.hibernate.test.domain.CulinariaJudaica;
import com.m4u.hibernate.test.domain.Usuario;

public class CulinariaJudaicaManager
{
    
    public static void main(String[] args) {
        CulinariaJudaicaManager mgr = new CulinariaJudaicaManager();
        
        mgr.createAndStoreEvent("hohoho", new Date());
        
        HibernateUtil.getSessionFactory().close();
    }

    
    private void createAndStoreEvent(String title, Date date) {

        Session session = HibernateUtil.getSessionFactory().getCurrentSession();

        session.beginTransaction();
        Usuario user = (Usuario) session.load(Usuario.class, 17);
//        CulinariaJudaica meuEvento = new CulinariaJudaica();
//        CulinariaJudaica culinariaTeste = new CulinariaJudaica();
//        
//        
//
//        
//        culinariaTeste.setTitulo("Novo teste");
//        culinariaTeste.setDataEnvio(date);
//        culinariaTeste.setTexto("Teste de texto");
//        culinariaTeste.setUsuario(user);
//        culinariaTeste.setLiberado(1);
//        culinariaTeste.setTipoFoto("image/jpeg");
//        
//        session.save(culinariaTeste);
//        
//        meuEvento.setTitulo(title);
//        meuEvento.setDataEnvio(date);
//        meuEvento.setTexto("TESTE SET");
//        meuEvento.setUsuario(user);
//        meuEvento.setLiberado(1);
//        meuEvento.setTipoFoto("image/jpeg");
//        
//        FileInputStream arquivo;
//        FileInputStream arquivostream;
//        byte[] arquivoBytes = new byte[350000];
//        byte[] arquivo2 = new byte[600000];
//        
//        try
//        {
//            //errocf.jpg
//            arquivo = new FileInputStream(new File("WebContent/erroCF.jpg"));
//            
//            while( (arquivo.read(arquivoBytes)) != -1 );
//            
//            arquivo.close();
//            
//            Blob arquivoBlob = new BlobImpl(arquivoBytes);
//            
//            meuEvento.setFoto(arquivoBlob);    
//            
//            //garden.jpg
//            arquivostream = new FileInputStream(new File("WebContent/Garden.jpg"));
//            
//            while( (arquivostream.read(arquivo2)) != -1 );
//            
//            arquivostream.close();
//            
//            Blob arquivoBlob2 = new BlobImpl(arquivo2);
//            
//            culinariaTeste.setFoto(arquivoBlob2);   
//            
//        }
//        catch (FileNotFoundException e)
//        {
//            System.out.println(">> FileNotFoundException ...");
//            e.printStackTrace();
//        }
//        catch(IOException e) 
//        {
//            System.out.println(">> IOException ...");
//            e.printStackTrace();
//        }               
//        
//        session.save(meuEvento);
//        session.save(culinariaTeste);
        
        //meuEvento e culinariaTeste estao transientes ainda.. vamos ver o que da ao tentar adicionar a um objeto persistente
//        user.getCulinariasJudaicas().add(meuEvento); 
  //      System.out.println("==== add meuEvento");

  //      user.setCulinariasJudaicas(null);
     
    
    //    user.getCulinariasJudaicas().add(culinariaTeste);
     //   System.out.println("==== add culinariaTeste");

        //session. delete( user.getCulinariasJudaicas());
//        HashSet<CulinariaJudaica> teste = new HashSet<CulinariaJudaica>();
//        
//       CulinariaJudaica culinariaTeste = new CulinariaJudaica();
//      culinariaTeste.setTitulo("HH");
//      culinariaTeste.setDataEnvio(date);
//      culinariaTeste.setTexto("HH1");
//      culinariaTeste.setUsuario(user);
//      culinariaTeste.setLiberado(1);
//      culinariaTeste.setTipoFoto("image/jpeg");
//      culinariaTeste.setFoto(null);
//        
//      teste.add(culinariaTeste);
//      
//      for(CulinariaJudaica cj : user.getCulinariasJudaicas()) {
//          session.delete(cj);
//      }
      
        
//        session.delete(user.getCulinariasJudaicas());
      
      
     // user.setCulinariasJudaicas(teste);
      
//        user.setCulinariasJudaicas();
        
        //session.persist(meuEvento);
        long anterior = System.currentTimeMillis();
        System.out.println(">>> anterior: "+anterior);
        session.getTransaction().commit();
        long atual = System.currentTimeMillis();
        
        System.out.println(">>> "+(atual-anterior));
        
        System.out.println("==== commit");

    }

}
